package soot.we.android.component;

import java.util.Map;

import soot.Body;
import soot.BodyTransformer;
import soot.toolkits.graph.UnitGraph;

public class MyBodyTransformer extends BodyTransformer {

	@Override
	protected void internalTransform(Body body, String arg1, Map arg2) {
		UnitGraph ug = ProcessJimpleClass.getCfgFromMethod(body);

		EntityMethod eCfg = new EntityMethod(body.getMethod().getName(), ug);
		MySceneTransformer.eCfgList.add(eCfg);
		

	}
    
	
}
//SootMethod method = body.getMethod();
	// System.out.println("instrumenting method : " + method.getName());
	// if (method.getName().equals("main") == false) {
	// return;
	// }
	// System.out.println("getSIgnature : "+body.getMethod().getSignature());
			// System.out.println("getDeclaration : "+body.getMethod().getDeclaration());

			// pc.searchInvoke(body);

			// ProcessClass pc = new ProcessClass();
			// ArrayList<String> al = pc.getCfgFromMethod(body);
			// for (int i = 0; i < al.size(); i++) {
			// System.out.println("this is the result, look at this------------ "
			// + al.get(i));
			// }

			// if (method.getName().equals("onCreate") == false) {
			// return;
			// }

			// **********find Static invoke***************
			// Iterator<Unit> iter = body.getUnits().snapshotIterator();
			// while (iter.hasNext()) {
			// Stmt s = (Stmt) iter.next();
			// if (s.containsInvokeExpr()) {
			// String declaringClass = s.getInvokeExpr().getMethod()
			// .getDeclaringClass().getName();
			// String name = s.getInvokeExpr().getMethod().getName();
			//
			// System.out.println("declaringClass: " + declaringClass);
			// System.out.println("name: " + name);
			//
			// System.out.println(sootMethod.getName() + " --> " + name);
			// if (declaringClass.equals("android.content.Intent")) {
			//
			// }
			// }
			// }
			// *****************end*************

			// CHATransformer.v().transform();
			// SootClass a =
			// Scene.v().getSootClass("com.example.test.MainActivity");
			//
			// SootMethod src =
			// Scene.v().getMainClass().getMethodByName("onCreate");
			// CallGraph cg = Scene.v().getCallGraph();
			//
			// Iterator<MethodOrMethodContext> targets = new Targets(
			// cg.edgesOutOf(src));
			// while (targets.hasNext()) {
			// SootMethod tgt = (SootMethod) targets.next();
			// System.out.println(src + " may call " + tgt);
			// }
			// System.out.println("Body name: " + body.toString());
			// SootClass sootClass = Scene.v().loadClassAndSupport("function");
			// sootClass.setApplicationClass();
			//
			// List<SootMethod> list1 = sootClass.getMethods();
			// for (SootMethod m : list1) {
			// System.out.println("Method Name: " + m.getName());
			// Body body1 = m.getActiveBody();
			// Chain units = body1.getUnits();
			// Iterator stmtIt = units.snapshotIterator();
			// while (stmtIt.hasNext()) {
			// Stmt stmt = (Stmt) stmtIt.next();
			// if (!stmt.containsInvokeExpr()) {
			// continue;
			// }
			// InvokeExpr expr = (InvokeExpr) stmt.getInvokeExpr();
			// List<Value> listArgs = (List<Value>) expr.getArgs();
			// SootMethod classTar = expr.getMethod();
			// }
			//
			// }